<?php namespace Common\Model;
use Hdphp\Model\Model;
/*
 * *****分类表***
 * 
 * $this->create ****************
 * 获得数据/自动验证
 */
class Cate extends Model
{
	//指定数据库里的表名(框架固定写法)
	protected $table = 'category';
	
	//自动验证(框架固定写法)
	protected $validate = array(
		//array(字段名,验证方法,错误信息,验证条件,验证时间)
		//cname表单不能为空
		array('cname','required','分类名称不能为空',3,3),
		//ctitle表单不不能为空
		array('ctitle','required','分类标题不能为空',3,3),
		//ctitle表单字数不能超过XX位
		array('ctitle','maxlen:100','分类标题不得超过100',3,3),
	);
	
	
	//*******分类添加
	public function store(){
	    //create心得: 只有create后$this->data才会有数据,并且create会触发自动验证($validate)
	    if($this->create()){
	    	//p($this->data);exit;  可以获得表单提交的内容(以数组形式)
	    	//添加($this->add)方法 会把$this->data里的数据添加进数据库
	    	$this->add();
	    	return TRUE;
	    }
	    return FALSE;
	}//store
	
	
	//*******编辑更新
	public function edit(){
	    if(!$this->create()) return FALSE;
		//**************修改时,需要在页面添加隐藏域*******
		$this->save();
		return TRUE;
	}//edit
	

	//*******获得除了自己和自己子集的分类数据
	public function getNoMy($cid){
	    //1.获得自己的子集cid	$this->get()获得这个表(category)的所有数据
	    $cids = $this->getSon($this->get(),$cid);
		//将所得数据压入到自己的cid
		$cids[] = $cid;
/*p($cids);exit;  
Array
(
    [0] => 7
    [1] => 3
)
*/
		//2.筛除子集和子集的cid的数据
		$where = "cid NOT IN(" .implode(',', $cids). ")";
		//3.返回除了自己和子集的所有数据
		return $this->where($where)->get();
	}//getNoMy
	
		
	//*******获得子集数据	***$data获得的是数据库category数据信息(二维数组)--getNoMy()函数传的参数($this->get())
	public function getSon($data,$cid){
		//创建空数组,用于压入数据(递归查找的数据)
		$temp = array();
		//循环库里的数据
		foreach ($data as $v) {
			//获得当前分类的子集
			if($v['pid'] == $cid){
				//将获得的数据压入到数组
				$temp[] = $v['cid'];
				//因为需要查询自己的子集,所以需要使用递归调用$v数据,然后合并到数组
				$temp = array_merge($temp,$this->getSon($data, $v['cid']));
			}
		}
		//返回最终结果
		return $temp;
	}//getSon

		
}//class
?>